package com.gitee.feizns.itrip.personal.auth.service;

import com.gitee.feizns.itrip.personal.beans.pojo.User;
import com.gitee.feizns.itrip.personal.utils.service.BaseService;

/**
 * @author feizns
 * @since 2018/12/26 0026
 */
public interface RegisterService extends BaseService<User> {

    /**
     * redis手机存储前缀
     */
    String DEFAULT_REDIS_PHONE_PREFIX = "PHONE:";

    /**
     * redis邮箱存储前缀
     */
    String DEFAULT_REDIS_EMAIL_PREFIX = "EMAIL:";

    /**
     * 邮箱验证码有效时间
     */
    int DEFAULT_EMAIL_EXISTS_TIME = 30;    //30分钟

    /**
     * 手机验证码有效时间
     */
    int DEFAULT_PHONE_EXISTS_TIME = 5;     //5分钟

    /**
     * 手机验证码位数
     */
    int DEFAULT_PHONE_CODE_NUMBER = 6;

    /**
     * 邮箱用户注册
     * @param entity 用户信息
     */
    void emailRegister(User entity);

    /**
     * 手机用户注册
     * @param entity 用户信息
     */
    void phoneRegister(User entity);

    /**
     * 激活邮箱
     * @param userCode 邮箱账号
     * @param code 激活码
     */
    void emailActivated(String userCode, String code);

    /**
     * 激活手机
     * @param userCode 手机账号
     * @param code 激活码
     */
    void phoneActivated(String userCode, String code);

    /**
     * 判断用户是否已激活
     * @param userCode 用户账号
     * @return true 已激活 | false 未激活或不存在
     */
    boolean isActivated(String userCode);

    /**
     * 检查用户名是否可用
     * @param userName 用户名
     * @return true 可用 | false 不可用
     */
    boolean availableUserName(String userName);

    /**
     * 检查用户编号是否可用
     * @param userCode 用户编码
     * @return true 可用 | false 不可用
     */
    boolean availableUserCode(String userCode);

}
